home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assemblers / cas.lha / data / stdio.s < prev   
Encoding:
Text File  |  1992-08-11  |  975 b   |  51 lines

  1. include "8051fa.h"
  2. include "kernel.h"
  3.  
  4. ;;; RS-485 SERIAL COMMUNICATIONS.
  5. ;;; Modes:
  6. ;;; (1) Receive data (REN = 1, T0 = 0, SM2 = 1)
  7. ;;; (2) Send data    (REM = 0, T0 = 1)
  8.  
  9. global SetPort:
  10.    mov SCON, #11000000b ;;; Serial comm: 9 bits, no parity, 1 stop bit.   
  11.    clr PS
  12.    clr RCLK
  13.    clr TCLK
  14.    mov A, TMOD
  15.    anl A, #00001111b
  16.    add A, #00100000b ;;; Timer 1: baud rate timer.
  17.    mov TMOD, A
  18.    mov TH1, #-3         ;;; Baud rate: 19200 baud.
  19.    setb TR1
  20.    clr TB8
  21.    clr RI
  22.    clr TI
  23.    setb SM2
  24.    setb ES
  25. ret
  26.  
  27. global getchar:
  28.    2:
  29.       jnb T0, 1f
  30.          clr T0    ;;; Set mode for "Receive data"
  31.          setb REN
  32.       1:
  33.       mov R0, #SP_RI
  34.       acall Pause
  35.       mov A, SBUF
  36.    jnb ACC.6, 2b
  37.    anl A, #00111111b
  38. ret
  39.  
  40. global putchar:
  41.    jb T0, 1f
  42.       mov R6, #100 ;;; Set mode for "Send data"
  43.       djnz R6, $   ;;; Wait 201 cycles for other end to release the line.
  44.       clr REN
  45.       setb T0
  46.    1:
  47.    mov SBUF, A
  48.    mov R0, #SP_TI
  49.    acall Pause
  50. ret
  51.